<?php
class Application_Model_Consulta extends Zend_Db_Table_Abstract{
    
    protected $_name ="consulta";

    public function getAll(){
        $idEsp="8";
        //Esto es para que me muestre los valores que no tienen ci, osea q no se han dado   
        $ci="";
        $select=$this->select();
        $select->from('consulta','*');
        $select->where('CI=?',$ci);
        $select->where('ESPECIALIDAD=?',$idEsp);
        return $this->fetchAll($select);
    }
    
    //Funcion que muestra las consultas para un medico y una especialidad que no estan asignadas a nadie
     public function getConsultasEsp($pIdEspecialidad,$pCajaProf){
        $fecha=date("Y/m/d");
        $servicio=new Application_Service_Numeros();
        //Agrego dias a la fecha para que me muestre las consultas de mas de tantos dias.   
        $fechafinal=$servicio->sumaFechas($fecha, 2);
        //Esto es para que me muestre los valores que no tienen ci, osea q no se han dado   
        $ci="";
        $select=$this->select();
        $select->from('consulta','*');
        $select->where('CI = ?', $ci);
        //$select->where('FECHA=(DATE_ADD($CURDATE(), INTERVAL 2))');
        $select->where('FECHA>=?',$fechafinal);
        $select->where('ESPECIALIDAD=?',$pIdEspecialidad);
        $select->where('CAJA_PROF=?',$pCajaProf);
        $select->order('FECHA');
        $select->order('HORA');
        return $this->fetchAll($select);   
    }
    
    public function inscribirAConsulta($pCi,$pIdConsulta,$pFecha){
        $data = array('CI'=> $pCi);
        
        $where['IdConsulta = ?']=$pIdConsulta;
        $where['CI = ?']="";
        $where['FECHA = ?']=$pFecha;
        
//        $where= $this->getAdapter()->quoteInto('IdConsulta = ?', $pIdConsulta);
//        $where2=$this->getAdapter()->quoteInto('CI <> ?', "");
//        $where3=$this->getAdapter()->quoteInto('FECHA = ?', $pFecha);
        $update = $this->update($data, $where);
//        print_r($update);
//exit;
    }
    
    //Es para saber si para una fecha y una especialidad tiene consulta
    public function saberSiTieneYaConsulta($pCi,$idEsp,$pFecha,$pCajaProf){
        $select=$this->select();
        $select->from('consulta','*');
        $select->where('CI = ?', $pCi);
        //$select->where('FECHA=(DATE_ADD($CURDATE(), INTERVAL 2))');
        $select->where('FECHA=?',$pFecha);
        $select->where('ESPECIALIDAD=?',$idEsp);
        $select->where('CAJA_PROF=?',$pCajaProf);
        return $this->fetchAll($select);   
    }
    
    //Es para cuando elja una especialidad pueda saber si ya tiene consultas para futuro
    public function saberSiTieneYaConsultaEspecialidad($pCi,$pIdEspecialidad){
        $fechaActual= date("Y/m/d");
        $sql="SELECT consulta.FECHA as FECHA, consulta.HORA as HORA,profesio.NOMBRE as NOMBRE, profesio.APELLIDO as APELLIDO FROM consulta INNER JOIN profesio ON profesio.CAJA_PROF=consulta.CAJA_PROF WHERE consulta.CI='$pCi' and consulta.FECHA>='$fechaActual' and consulta.ESPECIALIDAD= $pIdEspecialidad";
        $adapter=$this->getAdapter();
        $adapter->setFetchMode(Zend_Db::FETCH_OBJ);
        return $adapter->fetchAll($sql,Zend_Db::FETCH_BOTH); 
    }
    
    //Es para saber si la consulta esta libre XD
    public function saberSiLaConsultaEstaLibre($pIdConsulta,$pFechaConsulta){
        
        $select=$this->select();
        $ci='';
        $select->from('consulta','*');
        $select->where('IdConsulta=?',$pIdConsulta);
        $select->where('CI<>?',$ci);
        $select->where('FECHA=?',$pFechaConsulta);
        $resultado=$this->fetchAll($select);
        if($resultado->count()>=1){
            return "tomada";
        }else{
            return "libre";
        }
   }
//Es para saber la cantidad de consultas que tengo disponibles para una especilidad
   public function saberCantidadConsultasEsp($pIdEsp,$cajaProf){
        $fecha=date("Y/m/d");
        $servicio=new Application_Service_Numeros();
        //Agrego dias a la fecha para que me muestre las consultas de mas de tantos dias.   
        $fechafinal=$servicio->sumaFechas($fecha, 2);
        $select=$this->select();
        $ci='';
        $select->from('consulta','*');
        $select->where('ESPECIALIDAD=?',$pIdEsp);
        $select->where('CI=?',$ci);
        $select->where('FECHA>=?',$fechafinal);
        $select->where('CAJA_PROF=?',$cajaProf);
        $resultado=$this->fetchAll($select);
        return $resultado->count();
   }
   
   public function saberHoraComienzoConsulta($pCajaProf,$pFecha,$pIdEsp){
       $sql="SELECT min(convert(hora,signed)) as ini  FROM consulta WHERE CAJA_PROF='$pCajaProf' and FECHA='$pFecha' and ESPECIALIDAD='$pIdEsp'";
       $adapter=$this->getAdapter();
       $adapter->setFetchMode(Zend_Db::FETCH_OBJ);
       $resultado= $adapter->fetchAll($sql,Zend_Db::FETCH_BOTH);
       $hora;
       foreach($resultado as $res){
           $hora=$res->ini;
       }
       return $hora;
       
   }
   
   //Sirve para saber las consultas que tiene para el 0800
    public function verTodasLasConsultasUsuario($pCi){
        $fechaActual= date("Y/m/d");
        $sql="SELECT consulta.FECHA as FECHA, consulta.HORA as HORA,profesio.NOMBRE as NOMBRE, profesio.APELLIDO as APELLIDO FROM consulta INNER JOIN profesio ON profesio.CAJA_PROF=consulta.CAJA_PROF WHERE consulta.CI='$pCi' and consulta.FECHA>='$fechaActual'";
        $adapter=$this->getAdapter();
        $adapter->setFetchMode(Zend_Db::FETCH_OBJ);
        return $adapter->fetchAll($sql,Zend_Db::FETCH_BOTH); 
    }
   
}

